﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
//using System.Linq;
using System.Text;
using System.Windows.Forms;
using TimeTracker.Properties;

namespace TimeTracker
{
    public partial class MainForm : Form
    {
        bool exitFlag = false;

        public MainForm()
        {
            InitializeComponent();
        }
        
        private void MainForm_Load(object sender, EventArgs e)
        {
            LoadFormLocation();
            MainTracker.TrackerStart();
        }

        protected void Shutdown()
        {
            exitFlag = true;              // Признак завершения работы программы
            trayIt.Visible = false;
            SaveFormLocation();

            Application.Exit();
        }

        /// <summary> Обработка закрытия окна. При закрытии окна просто прячем его 
        /// и показываем иконку в трее.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (!exitFlag)
            {
                trayIt.Visible = true;          // Показываем значек в трее
                this.ShowInTaskbar = false;     // Убираем отображение окна из панели задач
                this.Hide();                    // Прячем окно.
                e.Cancel = true;
            }
        }

        /// <summary> Иконка в трее появляется при скрытии окна и служит 
        /// для восстановления окна.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void trayIt_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                if (!this.Visible)
                {
                    this.Show();
                    this.Activate();
                    //this.ShowInTaskbar = true;
                    //trayIt.Visible = false;
                }
                else
                {
                    trayIt.Visible = true;          // Показываем значек в трее
                    this.ShowInTaskbar = false;     // Убираем отображение окна из панели задач
                    this.Hide();                    // Прячем окно.
                }
            }
        }

        private void LoadFormLocation()
        {
            int x = Settings.Default.WinLocationX;
            int y = Settings.Default.WinLocationY;
            if (x >= 0 && y >= 0)
                this.Location = new Point(x, y);

            int val;
            val = Settings.Default.WinHeight;
            if (val >= 0)
                this.Height = val;
            val = Settings.Default.WinWidth;
            if (val >= 0)
                this.Width = val;

            uTracker1.TaskText = Settings.Default.Task1;
            uTracker2.TaskText = Settings.Default.Task2;
            uTracker3.TaskText = Settings.Default.Task3;
            uTracker4.TaskText = Settings.Default.Task4;
            uTracker5.TaskText = Settings.Default.Task5;
            uTracker6.TaskText = Settings.Default.Task6;

            uTracker1.TCounter = Settings.Default.Time1;
            uTracker2.TCounter = Settings.Default.Time2;
            uTracker3.TCounter = Settings.Default.Time3;
            uTracker4.TCounter = Settings.Default.Time4;
            uTracker5.TCounter = Settings.Default.Time5;
            uTracker6.TCounter = Settings.Default.Time6;
            MainTracker.TCounter = Settings.Default.MainTime;
        }

        private void SaveFormLocation()
        {
            Settings.Default.WinLocationX = this.Location.X;
            Settings.Default.WinLocationY = this.Location.Y;
            Settings.Default.WinHeight = this.Height;
            Settings.Default.WinWidth = this.Width;

            Settings.Default.Task1 = uTracker1.TaskText;
            Settings.Default.Task2 = uTracker2.TaskText;
            Settings.Default.Task3 = uTracker3.TaskText;
            Settings.Default.Task4 = uTracker4.TaskText;
            Settings.Default.Task5 = uTracker5.TaskText;
            Settings.Default.Task6 = uTracker6.TaskText;

            Settings.Default.Time1 = uTracker1.TCounter;
            Settings.Default.Time2 = uTracker2.TCounter;
            Settings.Default.Time3 = uTracker3.TCounter;
            Settings.Default.Time4 = uTracker4.TCounter;
            Settings.Default.Time5 = uTracker5.TCounter;
            Settings.Default.Time6 = uTracker6.TCounter;
            Settings.Default.MainTime = MainTracker.TCounter;

            Settings.Default.Save();
        }

        private void tmnuQuit_Click(object sender, EventArgs e)
        {
            Shutdown();
        }

        private void uTrackers_EventTrackerStart(object sender, EventArgs e)
        {
            //MessageBox.Show(e.ToString());
            uTracker1.TrackerStop();
            uTracker2.TrackerStop();
            uTracker3.TrackerStop();
            uTracker4.TrackerStop();
            uTracker5.TrackerStop();
            uTracker6.TrackerStop();
            MainTracker.TrackerStart();
        }

        private void MainTimer_Tick(object sender, EventArgs e)
        {
            lblTotalTime.Text = uTracker1.TCounter.Add(uTracker2.TCounter.Add(uTracker3.TCounter.Add(
                uTracker4.TCounter.Add(uTracker5.TCounter.Add(uTracker6.TCounter))))).ToString();
        }

        private void MainForm_HelpButtonClicked(object sender, CancelEventArgs e)
        {
            MessageBox.Show("Файл помощи не найден.");
            e.Cancel = true;
        }

    }
}
